package aspectos;

import java.util.HashMap;
import java.util.Map;

import dominio_b.Monitored_b;

public aspect ContadorLlamadasAspect_3  pertarget (execution(@Monitored_b  * *(..)) ){

	private Map<String, Integer> contadores = new HashMap<String, Integer>();

	public pointcut contarPorMetodo(Object target) :  execution(@Monitored_b  * *(..))&& target(target);

	after(Object target) : contarPorMetodo(target)  {
		String nombreMetodo = thisJoinPoint.getSignature().getName();
		contadores.put(nombreMetodo, cuenta(nombreMetodo) + 1);
	}

	private Integer cuenta(String nombreMetodo) {
		if (!contadores.containsKey(nombreMetodo)) {
			contadores.put(nombreMetodo, 0);
		}
		return contadores.get(nombreMetodo);
	}

	// PUNTO_3

	public int cantLlamadas(String nombreMetodo) {

		return this.cuenta(nombreMetodo);

	}

}